/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package admin.hibernate.model.dao;

import hibernate.pojo.Loaisanpham;
import hibernate.pojo.Sanpham;
import hibernate.util.HibernateUtil;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;

/**
 *
 * @author Administrator
 */
public class AdminLoaiSanPhamDAO 
{
    //<editor-fold defaultstate="collapsed" desc="1. HQL - Lấy danh sách loại sản phẩm">
    public static List<Loaisanpham> AdminLayDanhSachLoaiSanPhamHQL()
    {
        List<Loaisanpham> arrLoaiSanPham = null;
        Session session = HibernateUtil.getSessionFactory().openSession();
        try
        {
            String hql = "from Loaisanpham loaisp";
            Query query = session.createQuery(hql);
            arrLoaiSanPham = query.list();
            session.close();
        }
        catch(HibernateException ex)
        {
            System.out.println(ex);
        }
        return arrLoaiSanPham;
    }
    //</editor-fold>
    
    //<editor-fold defaultstate="collapsed" desc="1. HQL - Lấy danh sách loại sản phẩm hiển thị ở menu">
    public static List<Loaisanpham> AdminLayDanhSachLoaiSanPhamHienThiMenuHQL()
    {
        List<Loaisanpham> arrLoaiSanPham = null;
        Session session = HibernateUtil.getSessionFactory().openSession();
        try
        {
            String hql = "from Loaisanpham loaisp where loaisp.tinhTrang<>-1";
            Query query = session.createQuery(hql);
            arrLoaiSanPham = query.list();
            session.close();
        }
        catch(HibernateException ex)
        {
            System.out.println(ex);
        }
        return arrLoaiSanPham;
    }
    //</editor-fold>
    
    //<editor-fold defaultstate="collapsed" desc="2. Lấy danh sách sản phẩm theo loại sản phẩm">
    public static List<Sanpham> AdminLayDanhSachSanPhamTheoLoaiHQL(String tenLoai)
    {
        List<Sanpham> arrSanPham = null;
        Session session = HibernateUtil.getSessionFactory().openSession();
        try
        {
            String hql = "select sp from Sanpham sp where sp.loaisanpham.tenTrang like :tenTrang";
            Query query = session.createQuery(hql);
            query.setString("tenTrang", tenLoai);
            arrSanPham = query.list();
            //session.close();
        }
        catch(HibernateException ex)
        {
            System.out.println(ex);
        }
        return arrSanPham;
    }
    //</editor-fold>
    
    //<editor-fold defaultstate="collapsed" desc="3. Lấy sản phẩm theo ID">
    public static Loaisanpham getProductByID(int catID)
    {
        Loaisanpham cat = null;
        Session session = HibernateUtil.getSessionFactory().openSession();
        try
        {
            cat = (Loaisanpham) session.get(Loaisanpham.class, catID);
        }
        catch(HibernateException hex)
        {
            System.err.print(hex);
        }finally
        {
            session.close();
        }
        return cat;
    }
    //</editor-fold>
    
    //<editor-fold defaultstate="collapsed" desc="4. Lấy danh sách sản phẩm theo loại(có phân trang)">
    public static List<Sanpham> AdminLayDanhSachSanPhamTheoLoaiCoPhanTrang(String tenTrang, int trang)
    {
        List<Sanpham> arrSanPham = null;
        Session session = HibernateUtil.getSessionFactory().openSession();
        try
        {
            int SoSanPhamTrenTrang = 5; // Tự gán giá trị mặt định
            int BatDau = (trang-1) * SoSanPhamTrenTrang;
            String hql = "select sp from Sanpham sp where sp.loaisanpham.tenTrang like :tenTrang";
            Query query = session.createQuery(hql);
            query.setString("tenTrang", tenTrang);
            query.setFirstResult(BatDau);
            query.setMaxResults(SoSanPhamTrenTrang);
            arrSanPham = query.list();
            session.close();
        }
        catch(HibernateException ex)
        {
            System.out.println(ex);
        }
        return arrSanPham;
    }
    //</editor-fold>
    
    //<editor-fold defaultstate="collapsed" desc="5. Tính số trang ứng với từng loại sản phẩm">
    public static int AdminTinhSoTrang(String tenTrang)
    {
        int SoTrang = 0;
        int SoSanPhamTrenTrang = 5;    // Tự gán mặt định cho số lượng sản phẩm trên trang là 10
        int SoLuongSanPhamTheoLoaiSanPham = 0;
        SoLuongSanPhamTheoLoaiSanPham = AdminDemSoLuongSanPhamTheoLoaiSanPham(tenTrang);
        SoTrang = SoLuongSanPhamTheoLoaiSanPham/SoSanPhamTrenTrang;
        if(SoLuongSanPhamTheoLoaiSanPham % SoSanPhamTrenTrang!=0)
            SoTrang++;
        return SoTrang;
    }
    //</editor-fold>
    
    //<editor-fold defaultstate="collapsed" desc="6. Đếm số lượng sản phẩm theo loại sản phẩm">
    public static int AdminDemSoLuongSanPhamTheoLoaiSanPham(String tenTrang)
    {
        int soLuong = 0;
        Session session = HibernateUtil.getSessionFactory().openSession();
        try
        {
            String hql = "select count(*) from Sanpham sp where sp.loaisanpham.tenTrang=:tenTrang";
            Query query = session.createQuery(hql);
            query.setString("tenTrang", tenTrang);
            Object ob = query.uniqueResult();
            long sl = (Long)ob;
            soLuong = (int)sl;
            session.close();
        }catch(HibernateException ex)    
        {
            System.out.println(ex);
        }
        return soLuong;
    }
    //</editor-fold>
}